<?php 
/**
 * @param  array $data  需要处理的数据集
 * @param   int $pid  接受当前记录的id,作为是否pid 等于其值得一个条件
 * @return array   返回排过序的列表数组
 */
 function getTree($data,$pid = 0,$count = 0) {
    //因为函数在每次调用时都会将之前的数据清空,所以徐亚声明一个静态变量
    static $rec = array();
    //对原数组进行遍历,一次去除每一个分类的记录
    foreach($data as $val) {
        //保存一个计数
        if($val['pid'] == $pid) {
            //保存一个计数
            $val['count'] = $count;
            //将汉字类信息保存在新的数组里面
            $rec[] = $val;
            //在执行地柜,需要传递需要处理分类的数组,遍历的时候,当前记录id.
            getTree($data,$val['id'],$count +1);
        }
    }
    return $rec;
 }

/**
 * 把返回的数据集转换成Tree
 * @param array $list 要转换的数据集
 * @param string $pid parent标记字段
 * @param string $level level标记字段
 * @return array
 */
function list_to_tree($list, $pk='id', $pid = 'pid', $child = '_child', $root = 0) {
    // 创建Tree
    $tree = array();
    if(is_array($list)) {
        // 创建基于主键的数组引用
        $refer = array();
        foreach ($list as $key => $data) {
            $refer[$data[$pk]] =& $list[$key];
        }
        
        foreach ($list as $key => $data) {
            // 判断是否存在parent
            $parentId =  $data[$pid];
            if ($root == $parentId) {
                $tree[] =& $list[$key];
            }else{
                //如果存在父父类
                if (isset($refer[$parentId])) {
                    $parent =& $refer[$parentId];
                    $parent[$child][] =& $list[$key];
                }
            }
        }
    }
    // V($tree);
    return $tree;
}

//创建参数(包括签名的处理)
function createParam ($paramArr,$showapi_secret) {
     $paraStr = "";
     $signStr = "";
     ksort($paramArr);
     foreach ($paramArr as $key => $val) {
         if ($key != '' && $val != '') {
             $signStr .= $key.$val;
             $paraStr .= $key.'='.urlencode($val).'&';
         }
     }
     $signStr .= $showapi_secret;//排好序的参数加上secret,进行md5
     $sign = strtolower(md5($signStr));
     $paraStr .= 'showapi_sign='.$sign;//将md5后的值作为参数,便于服务器的效验
     // echo "排好序的参数:".$signStr."<br>\r\n";
     return $paraStr;
}

//把对象转换成数组
function object2array($object) {
  if (is_object($object)) {
    foreach ($object as $key => $value) {
      $array[$key] = $value;
    }
  }
  else {
    $array = $object;
  }
  return $array;
}
